package com.itheima.springboottlias.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
@Slf4j
@Component//交给spring管理
@Aspect//告知spring框架这是一个抽取类
//1.定义类,定义方法,抽取公共代码
public class RecordTimeAspect {
    //2.定义方法
    @Around("execution(* com.itheima.springboottlias.service.impl.*.*(..))")//定位需要该aop的方法
    public Object recordTime(ProceedingJoinPoint pjp/*代码目标方法*/) throws Throwable {
        //公共代码,获取当前起始时间
        LocalDateTime  start = LocalDateTime.now();

        //调用目标方法
        Object result = pjp.proceed();

        //公共代码获取当前结束时间
        LocalDateTime end = LocalDateTime.now();

        //公共代码获取方法执行时长
        log.info("方法执行时长为:"+(end.getSecond()-start.getSecond()));

        //返回结果
        return result;

    }
}
